package com.tools.Fisco;

import org.fisco.bcos.sdk.abi.FunctionReturnDecoder;
import org.fisco.bcos.sdk.abi.TypeReference;
import org.fisco.bcos.sdk.abi.datatypes.DynamicStruct;
import org.fisco.bcos.sdk.abi.datatypes.Function;
import org.fisco.bcos.sdk.abi.datatypes.Type;
import org.fisco.bcos.sdk.abi.datatypes.Utf8String;
import org.fisco.bcos.sdk.abi.datatypes.generated.Int256;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple1;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple2;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple3;
import org.fisco.bcos.sdk.client.Client;
import org.fisco.bcos.sdk.contract.Contract;
import org.fisco.bcos.sdk.crypto.CryptoSuite;
import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair;
import org.fisco.bcos.sdk.model.CryptoType;
import org.fisco.bcos.sdk.model.TransactionReceipt;
import org.fisco.bcos.sdk.model.callback.TransactionCallback;
import org.fisco.bcos.sdk.transaction.model.exception.ContractException;

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

@SuppressWarnings("unchecked")
public class UserPayInfo extends Contract {
    public static final String[] BINARY_ARRAY = {"60806040526040805190810160405280601181526020017f55736572506179496e666f5f7465737432000000000000000000000000000000815250600190805190602001906200005192919062000178565b503480156200005f57600080fd5b506110016000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356004b6a60016040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200011b91906200038b565b602060405180830381600087803b1580156200013657600080fd5b505af11580156200014b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200017191908101906200023d565b50620003f5565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001bb57805160ff1916838001178555620001ec565b82800160010185558215620001ec579182015b82811115620001eb578251825591602001919060010190620001ce565b5b509050620001fb9190620001ff565b5090565b6200022491905b808211156200022057600081600090555060010162000206565b5090565b90565b6000620002358251620003eb565b905092915050565b6000602082840312156200025057600080fd5b6000620002608482850162000227565b91505092915050565b600081546001811660008114620002895760018114620002aa57620002ef565b607f600283041680865260ff198316602087015260408601935050620002ef565b60028204808652602086019550620002c285620003d9565b60005b82811015620002e657815481890152600182019150602081019050620002c5565b80880195505050505b505092915050565b6000602e82527f434e592c484b442c4d4f502c5553442c4742502c4555522c4a50592c5347442c60208301527f4155442c63726561745f646174650000000000000000000000000000000000006040830152606082019050919050565b6000600782527f6163636f756e74000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006060820190508181036000830152620003a7818462000269565b90508181036020830152620003bc8162000354565b90508181036040830152620003d181620002f7565b905092915050565b60008160005260206000209050919050565b6000819050919050565b61587880620004056000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306e63ff814610072578063406c4af2146100af578063bcee70c9146100ec578063c2ef50fd14610117578063fcd7e3c114610154575b600080fd5b34801561007e57600080fd5b5061009960048036036100949190810190614c38565b610191565b6040516100a69190615203565b60405180910390f35b3480156100bb57600080fd5b506100d660048036036100d19190810190614ca4565b61098b565b6040516100e39190615203565b60405180910390f35b3480156100f857600080fd5b50610101611819565b60405161010e919061521e565b60405180910390f35b34801561012357600080fd5b5061013e60048036036101399190810190614ca4565b6118b7565b60405161014b9190615203565b60405180910390f35b34801561016057600080fd5b5061017b60048036036101769190810190614bb6565b61270f565b60405161018891906156a8565b60405180910390f35b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c960016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161021091906152de565b602060405180830381600087803b15801561022a57600080fd5b505af115801561023e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102629190810190614b64565b93508373ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156102c857600080fd5b505af11580156102dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103009190810190614b3b565b9250600091508273ffffffffffffffffffffffffffffffffffffffff1663e942b516886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161035b9190615589565b600060405180830381600087803b15801561037557600080fd5b505af1158015610389573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016103e291906155de565b600060405180830381600087803b1580156103fc57600080fd5b505af1158015610410573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016104699190615403565b600060405180830381600087803b15801561048357600080fd5b505af1158015610497573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016104f09190615451565b600060405180830381600087803b15801561050a57600080fd5b505af115801561051e573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161057791906154ed565b600060405180830381600087803b15801561059157600080fd5b505af11580156105a5573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016105fe91906153b5565b600060405180830381600087803b15801561061857600080fd5b505af115801561062c573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610685919061567a565b600060405180830381600087803b15801561069f57600080fd5b505af11580156106b3573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161070c919061562c565b600060405180830381600087803b15801561072657600080fd5b505af115801561073a573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610793919061549f565b600060405180830381600087803b1580156107ad57600080fd5b505af11580156107c1573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161081a919061553b565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663e942b516876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016108a19190615320565b600060405180830381600087803b1580156108bb57600080fd5b505af11580156108cf573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff166331afac3688856040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161092a929190615270565b602060405180830381600087803b15801561094457600080fd5b505af1158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061097c9190810190614b8d565b90508094505050505092915050565b600061099561496a565b60006109a08661270f565b915060405160200180807f434e59000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515610a1757805182526020820191506020810190506020830392506109f2565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515610a815780518252602082019150602081019050602083039250610a5c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515610aea5780518252602082019150602081019050602083039250610ac5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415610b2f578382602001510393506117c9565b60405160200180807f484b44000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515610ba45780518252602082019150602081019050602083039250610b7f565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515610c0e5780518252602082","019150602081019050602083039250610be9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515610c775780518252602082019150602081019050602083039250610c52565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415610cbc578382604001510393506117c8565b60405160200180807f4d4f50000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515610d315780518252602082019150602081019050602083039250610d0c565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515610d9b5780518252602082019150602081019050602083039250610d76565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515610e045780518252602082019150602081019050602083039250610ddf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415610e49578382606001510393506117c7565b60405160200180807f555344000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515610ebe5780518252602082019150602081019050602083039250610e99565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515610f285780518252602082019150602081019050602083039250610f03565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515610f915780518252602082019150602081019050602083039250610f6c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415610fd6578382608001510393506117c6565b60405160200180807f474250000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b60208310151561104b5780518252602082019150602081019050602083039250611026565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b6020831015156110b55780518252602082019150602081019050602083039250611090565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310151561111e57805182526020820191506020810190506020830392506110f9565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561116357838260a001510393506117c5565b60405160200180807f455552000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b6020831015156111d857805182526020820191506020810190506020830392506111b3565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515611242578051825260208201915060208101905060208303925061121d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156112ab5780518252602082019150602081019050602083039250611286565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156112f057838260c001510393506117c4565b60405160200180807f4a5059000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b6020831015156113655780518252602082019150602081019050602083039250611340565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b6020831015156113cf57805182526020820191506020810190506020830392506113aa565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156114385780518252602082019150602081019050602083039250611413565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561147d57838260e001510393506117c3565b60405160200180807f534744000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b6020831015156114f257805182526020820191506020810190506020830392506114cd565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b60208310151561155c5780518252602082019150602081019050602083039250611537565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156115c557805182526020820191506020810190506020830392506115a0565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561160b57838261010001510393506117c2565b60405160200180807f415544000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515611680578051825260208201915060208101905060208303925061165b565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b6020831015156116ea57805182526020820191506020810190506020830392506116c5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611753578051825260208201915060208101905060208303925061172e565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561179957838261012001510393506117c1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9250611810565b5b5b5b5b5b5b5b5b6117d2846132b1565b156117ec576117e28686866132ce565b9050809250611810565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd92505b50509392505050565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118af5780601f10611884576101008083540402835291602001916118af565b820191906000526020600020905b81548152906001019060200180831161189257829003601f168201915b505050505081565b60006118c161496a565b60006118cc8661270f565b915060405160200180807f434e59000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515611943578051825260208201915060208101905060208303925061191e565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b6020831015156119ad5780518252602082019150602081019050602083039250611988565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611a1657805182526020820191506020810190506020830392506119f1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415611a5b578382602001510193506126f5565b60405160200180807f484b44000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515611ad05780518252602082019150602081019050602083039250611aab565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515611b3a5780518252602082019150602081019050602083039250611b15565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611ba35780518252602082019150602081019050602083039250611b7e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415611be8578382604001510193506126f4565b60405160200180807f4d4f50000000000000","000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515611c5d5780518252602082019150602081019050602083039250611c38565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515611cc75780518252602082019150602081019050602083039250611ca2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611d305780518252602082019150602081019050602083039250611d0b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415611d75578382606001510193506126f3565b60405160200180807f555344000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515611dea5780518252602082019150602081019050602083039250611dc5565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515611e545780518252602082019150602081019050602083039250611e2f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611ebd5780518252602082019150602081019050602083039250611e98565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415611f02578382608001510193506126f2565b60405160200180807f474250000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515611f775780518252602082019150602081019050602083039250611f52565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515611fe15780518252602082019150602081019050602083039250611fbc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310151561204a5780518252602082019150602081019050602083039250612025565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561208f57838260a001510193506126f1565b60405160200180807f455552000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b60208310151561210457805182526020820191506020810190506020830392506120df565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b60208310151561216e5780518252602082019150602081019050602083039250612149565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156121d757805182526020820191506020810190506020830392506121b2565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561221c57838260c001510193506126f0565b60405160200180807f4a5059000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515612291578051825260208201915060208101905060208303925061226c565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b6020831015156122fb57805182526020820191506020810190506020830392506122d6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515612364578051825260208201915060208101905060208303925061233f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156123a957838260e001510193506126ef565b60405160200180807f534744000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b60208310151561241e57805182526020820191506020810190506020830392506123f9565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b6020831015156124885780518252602082019150602081019050602083039250612463565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156124f157805182526020820191506020810190506020830392506124cc565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561253757838261010001510193506126ee565b60405160200180807f415544000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b6020831015156125ac5780518252602082019150602081019050602083039250612587565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b60208310151561261657805182526020820191506020810190506020830392506125f1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310151561267f578051825260208201915060208101905060208303925061265a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156126c557838261012001510193506126ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9250612706565b5b5b5b5b5b5b5b5b6127008686866132ce565b90508092505b50509392505050565b61271761496a565b600080600061272461496a565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c960016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161279e91906152de565b602060405180830381600087803b1580156127b857600080fd5b505af11580156127cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127f09190810190614b64565b95508573ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561285657600080fd5b505af115801561286a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061288e9190810190614ae9565b94508473ffffffffffffffffffffffffffffffffffffffff1663cd30a1d1896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016128e59190615589565b600060405180830381600087803b1580156128ff57600080fd5b505af1158015612913573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff1663e8434e3989876040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161296e929190615240565b602060405180830381600087803b15801561298857600080fd5b505af115801561299c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129c09190810190614b12565b9350600091505b8373ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015612a2b57600080fd5b505af1158015612a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a639190810190614b8d565b8212156132a3578373ffffffffffffffffffffffffffffffffffffffff1663846719e0836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612abf9190615203565b602060405180830381600087803b158015612ad957600080fd5b505af1158015612aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b119190810190614b3b565b90508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612b66906155be565b602060405180830381600087803b158015612b8057600080fd5b505af1158015612b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612bb89190810190614b8d565b8360200181815250508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c010000000000000000000000000000000000","0000000000000000000000028152600401612c14906153e3565b602060405180830381600087803b158015612c2e57600080fd5b505af1158015612c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c669190810190614b8d565b8360400181815250508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612cc290615431565b602060405180830381600087803b158015612cdc57600080fd5b505af1158015612cf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612d149190810190614b8d565b8360600181815250508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612d70906154cd565b602060405180830381600087803b158015612d8a57600080fd5b505af1158015612d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612dc29190810190614b8d565b8360800181815250508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612e1e90615395565b602060405180830381600087803b158015612e3857600080fd5b505af1158015612e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e709190810190614b8d565b8360a00181815250508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612ecc9061565a565b602060405180830381600087803b158015612ee657600080fd5b505af1158015612efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f1e9190810190614b8d565b8360c00181815250508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612f7a9061560c565b602060405180830381600087803b158015612f9457600080fd5b505af1158015612fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612fcc9190810190614b8d565b8360e00181815250508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016130289061547f565b602060405180830381600087803b15801561304257600080fd5b505af1158015613056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061307a9190810190614b8d565b836101000181815250508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016130d79061551b565b602060405180830381600087803b1580156130f157600080fd5b505af1158015613105573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131299190810190614b8d565b836101200181815250508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161318690615569565b600060405180830381600087803b1580156131a057600080fd5b505af11580156131b4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506131dd9190810190614bf7565b83600001819052508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161323890615300565b600060405180830381600087803b15801561325257600080fd5b505af1158015613266573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061328f9190810190614bf7565b8361014001819052508160010191506129c7565b829650505050505050919050565b6000808212156132c457600090506132c9565b600190505b919050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c960016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161334d91906152de565b602060405180830381600087803b15801561336757600080fd5b505af115801561337b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061339f9190810190614b64565b9350600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515613413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340a90615355565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561347757600080fd5b505af115801561348b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506134af9190810190614b3b565b925060405160200180807f434e59000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b6020831015156135265780518252602082019150602081019050602083039250613501565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b602083101515613590578051825260208201915060208101905060208303925061356b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156135f957805182526020820191506020810190506020830392506135d4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156136bc578273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161368591906155de565b600060405180830381600087803b15801561369f57600080fd5b505af11580156136b3573d6000803e3d6000fd5b50505050614744565b60405160200180807f484b44000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515613731578051825260208201915060208101905060208303925061370c565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b60208310151561379b5780518252602082019150602081019050602083039250613776565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310151561380457805182526020820191506020810190506020830392506137df565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156138c7578273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016138909190615403565b600060405180830381600087803b1580156138aa57600080fd5b505af11580156138be573d6000803e3d6000fd5b50505050614743565b60405160200180807f4d4f50000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b60208310151561393c5780518252602082019150602081019050602083039250613917565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b6020831015156139a65780518252602082019150602081019050602083039250613981565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515613a0f57805182526020820191506020810190506020830392506139ea565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415613ad2578273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613a9b9190615451565b600060405180830381600087803b158015613ab557600080fd5b505af1158015613ac9573d6000803e3d6000fd5b50505050614742565b60405160200180807f555344000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515613b475780518252602082019150602081019050602083039250613b22565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b602083101515613bb15780518252602082019150602081019050602083039250613b8c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015","15613c1a5780518252602082019150602081019050602083039250613bf5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415613cdd578273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613ca691906154ed565b600060405180830381600087803b158015613cc057600080fd5b505af1158015613cd4573d6000803e3d6000fd5b50505050614741565b60405160200180807f474250000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515613d525780518252602082019150602081019050602083039250613d2d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b602083101515613dbc5780518252602082019150602081019050602083039250613d97565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515613e255780518252602082019150602081019050602083039250613e00565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415613ee8578273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613eb191906153b5565b600060405180830381600087803b158015613ecb57600080fd5b505af1158015613edf573d6000803e3d6000fd5b50505050614740565b60405160200180807f455552000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515613f5d5780518252602082019150602081019050602083039250613f38565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b602083101515613fc75780518252602082019150602081019050602083039250613fa2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515614030578051825260208201915060208101905060208303925061400b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156140f3578273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016140bc919061567a565b600060405180830381600087803b1580156140d657600080fd5b505af11580156140ea573d6000803e3d6000fd5b5050505061473f565b60405160200180807f4a5059000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b6020831015156141685780518252602082019150602081019050602083039250614143565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b6020831015156141d257805182526020820191506020810190506020830392506141ad565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310151561423b5780518252602082019150602081019050602083039250614216565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156142fe578273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016142c7919061562c565b600060405180830381600087803b1580156142e157600080fd5b505af11580156142f5573d6000803e3d6000fd5b5050505061473e565b60405160200180807f534744000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515614373578051825260208201915060208101905060208303925061434e565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b6020831015156143dd57805182526020820191506020810190506020830392506143b8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156144465780518252602082019150602081019050602083039250614421565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415614509578273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016144d2919061549f565b600060405180830381600087803b1580156144ec57600080fd5b505af1158015614500573d6000803e3d6000fd5b5050505061473d565b60405160200180807f415544000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b60208310151561457e5780518252602082019150602081019050602083039250614559565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b6020831015156145e857805182526020820191506020810190506020830392506145c3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515614651578051825260208201915060208101905060208303925061462c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415614714578273ffffffffffffffffffffffffffffffffffffffff16632ef8ba74876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016146dd919061553b565b600060405180830381600087803b1580156146f757600080fd5b505af115801561470b573d6000803e3d6000fd5b5050505061473c565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe945061495f565b5b5b5b5b5b5b5b5b8373ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156147a857600080fd5b505af11580156147bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506147e09190810190614ae9565b91508173ffffffffffffffffffffffffffffffffffffffff1663cd30a1d1896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016148379190615589565b600060405180830381600087803b15801561485157600080fd5b505af1158015614865573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663bf2b70a18985856040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016148c2939291906152a0565b602060405180830381600087803b1580156148dc57600080fd5b505af11580156148f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506149149190810190614b8d565b905060008113151561495b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161495290615375565b60405180910390fd5b8094505b505050509392505050565b6101606040519081016040528060608152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081525090565b60006149d18251615775565b905092915050565b60006149e58251615787565b905092915050565b60006149f98251615799565b905092915050565b6000614a0d82516157ab565b905092915050565b6000614a2182356157bd565b905092915050565b6000614a3582516157bd565b905092915050565b600082601f8301121515614a5057600080fd5b8135614a63614a5e826156f7565b6156ca565b91508082526020830160208301858383011115614a7f57600080fd5b614a8a8382846157eb565b50505092915050565b600082601f8301121515614aa657600080fd5b8151614ab9614ab4826156f7565b6156ca565b91508082526020830160208301858383011115614ad557600080fd5b614ae08382846157fa565b50505092915050565b600060208284031215614afb57600080fd5b6000614b09848285016149c5565b91505092915050565b600060208284031215614b2457600080fd5b6000614b32848285016149d9565b91505092915050565b600060208284031215614b4d57600080fd5b6000614b5b848285016149ed565b91505092915050565b600060208284031215614b7657600080fd5b6000614b8484828501614a01565b91505092915050565b600060208284031215614b9f57600080fd5b6000614bad84828501614a29565b91505092915050565b600060208284031215614bc857600080fd5b600082013567ffffffffffffffff811115614be257600080fd5b614bee84828501614a3d565b91505092915050565b600060","208284031215614c0957600080fd5b600082015167ffffffffffffffff811115614c2357600080fd5b614c2f84828501614a93565b91505092915050565b60008060408385031215614c4b57600080fd5b600083013567ffffffffffffffff811115614c6557600080fd5b614c7185828601614a3d565b925050602083013567ffffffffffffffff811115614c8e57600080fd5b614c9a85828601614a3d565b9150509250929050565b600080600060608486031215614cb957600080fd5b600084013567ffffffffffffffff811115614cd357600080fd5b614cdf86828701614a3d565b935050602084013567ffffffffffffffff811115614cfc57600080fd5b614d0886828701614a3d565b9250506040614d1986828701614a15565b9150509250925092565b614d2c816157c7565b82525050565b614d3b816157d9565b82525050565b614d4a8161576b565b82525050565b6000614d5b82615740565b808452614d6f8160208601602086016157fa565b614d788161582d565b602085010191505092915050565b6000614d9182615735565b808452614da58160208601602086016157fa565b614dae8161582d565b602085010191505092915050565b600081546001811660008114614dd95760018114614df957614e3a565b607f600283041680865260ff198316602087015260408601935050614e3a565b60028204808652602086019550614e0f85615723565b60005b82811015614e3157815481890152600182019150602081019050614e12565b80880195505050505b505092915050565b6000600a82527f63726561745f64617465000000000000000000000000000000000000000000006020830152604082019050919050565b6000601482527f7461626c65206e616d65206e6f742065786973740000000000000000000000006020830152604082019050919050565b6000601182527f75706461746520636f756e74203c3d20300000000000000000000000000000006020830152604082019050919050565b6000600382527f47425000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f484b4400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f4d4f5000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f53474400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f55534400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f41554400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600782527f6163636f756e74000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f434e5900000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f4a505900000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f45555200000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061016083016000830151848203600086015261512b8282614d86565b91505060208301516151406020860182614d41565b5060408301516151536040860182614d41565b5060608301516151666060860182614d41565b5060808301516151796080860182614d41565b5060a083015161518c60a0860182614d41565b5060c083015161519f60c0860182614d41565b5060e08301516151b260e0860182614d41565b506101008301516151c7610100860182614d41565b506101208301516151dc610120860182614d41565b506101408301518482036101408601526151f68282614d86565b9150508091505092915050565b60006020820190506152186000830184614d41565b92915050565b600060208201905081810360008301526152388184614d86565b905092915050565b6000604082019050818103600083015261525a8185614d50565b90506152696020830184614d23565b9392505050565b6000604082019050818103600083015261528a8185614d50565b90506152996020830184614d32565b9392505050565b600060608201905081810360008301526152ba8186614d50565b90506152c96020830185614d32565b6152d66040830184614d23565b949350505050565b600060208201905081810360008301526152f88184614dbc565b905092915050565b6000602082019050818103600083015261531981614e42565b9050919050565b6000604082019050818103600083015261533981614e42565b9050818103602083015261534d8184614d50565b905092915050565b6000602082019050818103600083015261536e81614e79565b9050919050565b6000602082019050818103600083015261538e81614eb0565b9050919050565b600060208201905081810360008301526153ae81614ee7565b9050919050565b600060408201905081810360008301526153ce81614ee7565b90506153dd6020830184614d41565b92915050565b600060208201905081810360008301526153fc81614f1e565b9050919050565b6000604082019050818103600083015261541c81614f1e565b905061542b6020830184614d41565b92915050565b6000602082019050818103600083015261544a81614f55565b9050919050565b6000604082019050818103600083015261546a81614f55565b90506154796020830184614d41565b92915050565b6000602082019050818103600083015261549881614f8c565b9050919050565b600060408201905081810360008301526154b881614f8c565b90506154c76020830184614d41565b92915050565b600060208201905081810360008301526154e681614fc3565b9050919050565b6000604082019050818103600083015261550681614fc3565b90506155156020830184614d41565b92915050565b6000602082019050818103600083015261553481614ffa565b9050919050565b6000604082019050818103600083015261555481614ffa565b90506155636020830184614d41565b92915050565b6000602082019050818103600083015261558281615031565b9050919050565b600060408201905081810360008301526155a281615031565b905081810360208301526155b68184614d50565b905092915050565b600060208201905081810360008301526155d781615068565b9050919050565b600060408201905081810360008301526155f781615068565b90506156066020830184614d41565b92915050565b600060208201905081810360008301526156258161509f565b9050919050565b600060408201905081810360008301526156458161509f565b90506156546020830184614d41565b92915050565b60006020820190508181036000830152615673816150d6565b9050919050565b60006040820190508181036000830152615693816150d6565b90506156a26020830184614d41565b92915050565b600060208201905081810360008301526156c2818461510d565b905092915050565b6000604051905081810181811067ffffffffffffffff821117156156ed57600080fd5b8060405250919050565b600067ffffffffffffffff82111561570e57600080fd5b601f19601f8301169050602081019050919050565b60008160005260206000209050919050565b600081519050919050565b600081519050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006157808261574b565b9050919050565b60006157928261574b565b9050919050565b60006157a48261574b565b9050919050565b60006157b68261574b565b9050919050565b6000819050919050565b60006157d28261574b565b9050919050565b60006157e48261574b565b9050919050565b82818337600083830152505050565b60005b838110156158185780820151818401526020810190506157fd565b83811115615827576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a723058202994869a3012e30e70f60ac91611de77330399519ae7f8441e7f99f8ea4442a76c6578706572696d656e74616cf50037"};

    public static final String BINARY = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", BINARY_ARRAY);

    public static final String[] SM_BINARY_ARRAY = {"60806040526040805190810160405280601181526020017f55736572506179496e666f5f7465737432000000000000000000000000000000815250600190805190602001906200005192919062000178565b503480156200005f57600080fd5b506110016000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c92a780160016040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200011b91906200038b565b602060405180830381600087803b1580156200013657600080fd5b505af11580156200014b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200017191908101906200023d565b50620003f5565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001bb57805160ff1916838001178555620001ec565b82800160010185558215620001ec579182015b82811115620001eb578251825591602001919060010190620001ce565b5b509050620001fb9190620001ff565b5090565b6200022491905b808211156200022057600081600090555060010162000206565b5090565b90565b6000620002358251620003eb565b905092915050565b6000602082840312156200025057600080fd5b6000620002608482850162000227565b91505092915050565b600081546001811660008114620002895760018114620002aa57620002ef565b607f600283041680865260ff198316602087015260408601935050620002ef565b60028204808652602086019550620002c285620003d9565b60005b82811015620002e657815481890152600182019150602081019050620002c5565b80880195505050505b505092915050565b6000602e82527f434e592c484b442c4d4f502c5553442c4742502c4555522c4a50592c5347442c60208301527f4155442c63726561745f646174650000000000000000000000000000000000006040830152606082019050919050565b6000600782527f6163636f756e74000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006060820190508181036000830152620003a7818462000269565b90508181036020830152620003bc8162000354565b90508181036040830152620003d181620002f7565b905092915050565b60008160005260206000209050919050565b6000819050919050565b61587880620004056000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631c26ccff146100725780633069e2e8146100af5780635b325d78146100ec5780635eaaf64714610129578063ce0a9fb914610154575b600080fd5b34801561007e57600080fd5b5061009960048036036100949190810190614ca4565b610191565b6040516100a69190615203565b60405180910390f35b3480156100bb57600080fd5b506100d660048036036100d19190810190614ca4565b610fe9565b6040516100e39190615203565b60405180910390f35b3480156100f857600080fd5b50610113600480360361010e9190810190614bb6565b611e77565b60405161012091906156a8565b60405180910390f35b34801561013557600080fd5b5061013e612a19565b60405161014b919061521e565b60405180910390f35b34801561016057600080fd5b5061017b60048036036101769190810190614c38565b612ab7565b6040516101889190615203565b60405180910390f35b600061019b61496a565b60006101a686611e77565b915060405160200180807f434e59000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b60208310151561021d57805182526020820191506020810190506020830392506101f8565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b6020831015156102875780518252602082019150602081019050602083039250610262565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156102f057805182526020820191506020810190506020830392506102cb565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561033557838260200151019350610fcf565b60405160200180807f484b44000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b6020831015156103aa5780518252602082019150602081019050602083039250610385565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b60208310151561041457805182526020820191506020810190506020830392506103ef565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310151561047d5780518252602082019150602081019050602083039250610458565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156104c257838260400151019350610fce565b60405160200180807f4d4f50000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b6020831015156105375780518252602082019150602081019050602083039250610512565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b6020831015156105a1578051825260208201915060208101905060208303925061057c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310151561060a57805182526020820191506020810190506020830392506105e5565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561064f57838260600151019350610fcd565b60405160200180807f555344000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b6020831015156106c4578051825260208201915060208101905060208303925061069f565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b60208310151561072e5780518252602082019150602081019050602083039250610709565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156107975780518252602082019150602081019050602083039250610772565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156107dc57838260800151019350610fcc565b60405160200180807f474250000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515610851578051825260208201915060208101905060208303925061082c565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b6020831015156108bb5780518252602082019150602081019050602083039250610896565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310151561092457805182526020820191506020810190506020830392506108ff565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561096957838260a00151019350610fcb565b60405160200180807f455552000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b6020831015156109de57805182526020820191506020810190506020830392506109b9565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515610a485780518252602082019150602081019050602083039250610a23565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515610ab15780518252602082019150602081019050602083039250610a8c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415610af657838260c00151019350610fca565b60405160200180807f4a5059000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515610b6b5780518252602082019150602081019050602083039250610b46565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515610bd55780518252602082019150602081019050602083039250610bb0565b6001836020036101000a038019825116818451168082178552505050505050905001915050","6040516020818303038152906040526040518082805190602001908083835b602083101515610c3e5780518252602082019150602081019050602083039250610c19565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415610c8357838260e00151019350610fc9565b60405160200180807f534744000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515610cf85780518252602082019150602081019050602083039250610cd3565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515610d625780518252602082019150602081019050602083039250610d3d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515610dcb5780518252602082019150602081019050602083039250610da6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415610e115783826101000151019350610fc8565b60405160200180807f415544000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515610e865780518252602082019150602081019050602083039250610e61565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515610ef05780518252602082019150602081019050602083039250610ecb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515610f595780518252602082019150602081019050602083039250610f34565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415610f9f5783826101200151019350610fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9250610fe0565b5b5b5b5b5b5b5b5b610fda8686866132b1565b90508092505b50509392505050565b6000610ff361496a565b6000610ffe86611e77565b915060405160200180807f434e59000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b6020831015156110755780518252602082019150602081019050602083039250611050565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b6020831015156110df57805182526020820191506020810190506020830392506110ba565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156111485780518252602082019150602081019050602083039250611123565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561118d57838260200151039350611e27565b60405160200180807f484b44000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b60208310151561120257805182526020820191506020810190506020830392506111dd565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b60208310151561126c5780518252602082019150602081019050602083039250611247565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156112d557805182526020820191506020810190506020830392506112b0565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561131a57838260400151039350611e26565b60405160200180807f4d4f50000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b60208310151561138f578051825260208201915060208101905060208303925061136a565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b6020831015156113f957805182526020820191506020810190506020830392506113d4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611462578051825260208201915060208101905060208303925061143d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156114a757838260600151039350611e25565b60405160200180807f555344000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b60208310151561151c57805182526020820191506020810190506020830392506114f7565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b6020831015156115865780518252602082019150602081019050602083039250611561565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156115ef57805182526020820191506020810190506020830392506115ca565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561163457838260800151039350611e24565b60405160200180807f474250000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b6020831015156116a95780518252602082019150602081019050602083039250611684565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b60208310151561171357805182526020820191506020810190506020830392506116ee565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310151561177c5780518252602082019150602081019050602083039250611757565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156117c157838260a00151039350611e23565b60405160200180807f455552000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b6020831015156118365780518252602082019150602081019050602083039250611811565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b6020831015156118a0578051825260208201915060208101905060208303925061187b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310151561190957805182526020820191506020810190506020830392506118e4565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561194e57838260c00151039350611e22565b60405160200180807f4a5059000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b6020831015156119c3578051825260208201915060208101905060208303925061199e565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515611a2d5780518252602082019150602081019050602083039250611a08565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611a965780518252602082019150602081019050602083039250611a71565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415611adb57838260e00151039350611e21565b60405160200180807f534744000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515611b505780518252602082019150602081019050602083039250611b2b565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515611bba5780518252602082019150602081019050602083039250611b95565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052604051808280519060200190","8083835b602083101515611c235780518252602082019150602081019050602083039250611bfe565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415611c695783826101000151039350611e20565b60405160200180807f415544000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515611cde5780518252602082019150602081019050602083039250611cb9565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916856040516020018082805190602001908083835b602083101515611d485780518252602082019150602081019050602083039250611d23565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515611db15780518252602082019150602081019050602083039250611d8c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415611df75783826101200151039350611e1f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9250611e6e565b5b5b5b5b5b5b5b5b611e308461494d565b15611e4a57611e408686866132b1565b9050809250611e6e565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd92505b50509392505050565b611e7f61496a565b6000806000611e8c61496a565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b6560016040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401611f0691906152de565b602060405180830381600087803b158015611f2057600080fd5b505af1158015611f34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f589190810190614b64565b95508573ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611fbe57600080fd5b505af1158015611fd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ff69190810190614ae9565b94508473ffffffffffffffffffffffffffffffffffffffff1663ae763db5896040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161204d91906154ed565b600060405180830381600087803b15801561206757600080fd5b505af115801561207b573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff1663d8ac595789876040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016120d6929190615240565b602060405180830381600087803b1580156120f057600080fd5b505af1158015612104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121289190810190614b12565b9350600091505b8373ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561219357600080fd5b505af11580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506121cb9190810190614b8d565b821215612a0b578373ffffffffffffffffffffffffffffffffffffffff16633dd2b614836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016122279190615203565b602060405180830381600087803b15801561224157600080fd5b505af1158015612255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122799190810190614b3b565b90508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016122ce9061547f565b602060405180830381600087803b1580156122e857600080fd5b505af11580156122fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123209190810190614b8d565b8360200181815250508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161237c90615522565b602060405180830381600087803b15801561239657600080fd5b505af11580156123aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123ce9190810190614b8d565b8360400181815250508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161242a906153c3565b602060405180830381600087803b15801561244457600080fd5b505af1158015612458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061247c9190810190614b8d565b8360600181815250508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016124d890615570565b602060405180830381600087803b1580156124f257600080fd5b505af1158015612506573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061252a9190810190614b8d565b8360800181815250508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016125869061565a565b602060405180830381600087803b1580156125a057600080fd5b505af11580156125b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125d89190810190614b8d565b8360a00181815250508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016126349061560c565b602060405180830381600087803b15801561264e57600080fd5b505af1158015612662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506126869190810190614b8d565b8360c00181815250508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016126e290615355565b602060405180830381600087803b1580156126fc57600080fd5b505af1158015612710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127349190810190614b8d565b8360e00181815250508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161279090615431565b602060405180830381600087803b1580156127aa57600080fd5b505af11580156127be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506127e29190810190614b8d565b836101000181815250508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161283f906155be565b602060405180830381600087803b15801561285957600080fd5b505af115801561286d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128919190810190614b8d565b836101200181815250508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016128ee906154cd565b600060405180830381600087803b15801561290857600080fd5b505af115801561291c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506129459190810190614bf7565b83600001819052508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016129a090615300565b600060405180830381600087803b1580156129ba57600080fd5b505af11580156129ce573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506129f79190810190614bf7565b83610140018190525081600101915061212f565b829650505050505050919050565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612aaf5780601f10612a8457610100808354040283529160200191612aaf565b820191906000526020600020905b815481529060010190602001808311612a9257829003601f168201915b505050505081565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b6560016040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612b3691906152de565b602060405180830381600087803b158015612b5057600080fd5b505af1158015612b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612b889190810190614b64565b93508373ffffffffffffffffffffffffffffffffffffffff16635887ab246040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015612bee57600080fd5b505af1158015612c02573d60","00803e3d6000fd5b505050506040513d601f19601f82011682018060405250612c269190810190614b3b565b9250600091508273ffffffffffffffffffffffffffffffffffffffff16631a391cb4886040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612c8191906154ed565b600060405180830381600087803b158015612c9b57600080fd5b505af1158015612caf573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663def42698836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612d08919061549f565b600060405180830381600087803b158015612d2257600080fd5b505af1158015612d36573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663def42698836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612d8f9190615542565b600060405180830381600087803b158015612da957600080fd5b505af1158015612dbd573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663def42698836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612e1691906153e3565b600060405180830381600087803b158015612e3057600080fd5b505af1158015612e44573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663def42698836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612e9d9190615590565b600060405180830381600087803b158015612eb757600080fd5b505af1158015612ecb573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663def42698836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612f24919061567a565b600060405180830381600087803b158015612f3e57600080fd5b505af1158015612f52573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663def42698836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612fab919061562c565b600060405180830381600087803b158015612fc557600080fd5b505af1158015612fd9573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663def42698836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016130329190615375565b600060405180830381600087803b15801561304c57600080fd5b505af1158015613060573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663def42698836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016130b99190615451565b600060405180830381600087803b1580156130d357600080fd5b505af11580156130e7573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663def42698836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161314091906155de565b600060405180830381600087803b15801561315a57600080fd5b505af115801561316e573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16631a391cb4876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016131c79190615320565b600060405180830381600087803b1580156131e157600080fd5b505af11580156131f5573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff16634c6f30c088856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613250929190615270565b602060405180830381600087803b15801561326a57600080fd5b505af115801561327e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506132a29190810190614b8d565b90508094505050505092915050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b6560016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161333091906152de565b602060405180830381600087803b15801561334a57600080fd5b505af115801561335e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133829190810190614b64565b9350600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156133f6576040517fc703cb120000000000000000000000000000000000000000000000000000000081526004016133ed90615411565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16635887ab246040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561345a57600080fd5b505af115801561346e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506134929190810190614b3b565b925060405160200180807f434e59000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b60208310151561350957805182526020820191506020810190506020830392506134e4565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b602083101515613573578051825260208201915060208101905060208303925061354e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156135dc57805182526020820191506020810190506020830392506135b7565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916141561369f578273ffffffffffffffffffffffffffffffffffffffff1663def42698876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613668919061549f565b600060405180830381600087803b15801561368257600080fd5b505af1158015613696573d6000803e3d6000fd5b50505050614727565b60405160200180807f484b44000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b60208310151561371457805182526020820191506020810190506020830392506136ef565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b60208310151561377e5780518252602082019150602081019050602083039250613759565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156137e757805182526020820191506020810190506020830392506137c2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156138aa578273ffffffffffffffffffffffffffffffffffffffff1663def42698876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016138739190615542565b600060405180830381600087803b15801561388d57600080fd5b505af11580156138a1573d6000803e3d6000fd5b50505050614726565b60405160200180807f4d4f50000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b60208310151561391f57805182526020820191506020810190506020830392506138fa565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b6020831015156139895780518252602082019150602081019050602083039250613964565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156139f257805182526020820191506020810190506020830392506139cd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415613ab5578273ffffffffffffffffffffffffffffffffffffffff1663def42698876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613a7e91906153e3565b600060405180830381600087803b158015613a9857600080fd5b505af1158015613aac573d6000803e3d6000fd5b50505050614725565b60405160200180807f555344000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515613b2a5780518252602082019150602081019050602083039250613b05565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b602083101515613b945780518252602082019150602081019050602083039250613b6f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515613bfd5780518252602082019150602081019050602083039250613b","d8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415613cc0578273ffffffffffffffffffffffffffffffffffffffff1663def42698876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613c899190615590565b600060405180830381600087803b158015613ca357600080fd5b505af1158015613cb7573d6000803e3d6000fd5b50505050614724565b60405160200180807f474250000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515613d355780518252602082019150602081019050602083039250613d10565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b602083101515613d9f5780518252602082019150602081019050602083039250613d7a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515613e085780518252602082019150602081019050602083039250613de3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161415613ecb578273ffffffffffffffffffffffffffffffffffffffff1663def42698876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401613e94919061567a565b600060405180830381600087803b158015613eae57600080fd5b505af1158015613ec2573d6000803e3d6000fd5b50505050614723565b60405160200180807f455552000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515613f405780518252602082019150602081019050602083039250613f1b565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b602083101515613faa5780518252602082019150602081019050602083039250613f85565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156140135780518252602082019150602081019050602083039250613fee565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156140d6578273ffffffffffffffffffffffffffffffffffffffff1663def42698876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161409f919061562c565b600060405180830381600087803b1580156140b957600080fd5b505af11580156140cd573d6000803e3d6000fd5b50505050614722565b60405160200180807f4a5059000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b60208310151561414b5780518252602082019150602081019050602083039250614126565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b6020831015156141b55780518252602082019150602081019050602083039250614190565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310151561421e57805182526020820191506020810190506020830392506141f9565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156142e1578273ffffffffffffffffffffffffffffffffffffffff1663def42698876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016142aa9190615375565b600060405180830381600087803b1580156142c457600080fd5b505af11580156142d8573d6000803e3d6000fd5b50505050614721565b60405160200180807f534744000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b6020831015156143565780518252602082019150602081019050602083039250614331565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b6020831015156143c0578051825260208201915060208101905060208303925061439b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156144295780518252602082019150602081019050602083039250614404565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156144ec578273ffffffffffffffffffffffffffffffffffffffff1663def42698876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016144b59190615451565b600060405180830381600087803b1580156144cf57600080fd5b505af11580156144e3573d6000803e3d6000fd5b50505050614720565b60405160200180807f415544000000000000000000000000000000000000000000000000000000000081525060030190506040516020818303038152906040526040518082805190602001908083835b602083101515614561578051825260208201915060208101905060208303925061453c565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916876040516020018082805190602001908083835b6020831015156145cb57805182526020820191506020810190506020830392506145a6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515614634578051825260208201915060208101905060208303925061460f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614156146f7578273ffffffffffffffffffffffffffffffffffffffff1663def42698876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016146c091906155de565b600060405180830381600087803b1580156146da57600080fd5b505af11580156146ee573d6000803e3d6000fd5b5050505061471f565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9450614942565b5b5b5b5b5b5b5b5b8373ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561478b57600080fd5b505af115801561479f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506147c39190810190614ae9565b91508173ffffffffffffffffffffffffffffffffffffffff1663ae763db5896040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161481a91906154ed565b600060405180830381600087803b15801561483457600080fd5b505af1158015614848573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663664b37d68985856040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016148a5939291906152a0565b602060405180830381600087803b1580156148bf57600080fd5b505af11580156148d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506148f79190810190614b8d565b905060008113151561493e576040517fc703cb12000000000000000000000000000000000000000000000000000000008152600401614935906153a3565b60405180910390fd5b8094505b505050509392505050565b6000808212156149605760009050614965565b600190505b919050565b6101606040519081016040528060608152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081525090565b60006149d18251615775565b905092915050565b60006149e58251615787565b905092915050565b60006149f98251615799565b905092915050565b6000614a0d82516157ab565b905092915050565b6000614a2182356157bd565b905092915050565b6000614a3582516157bd565b905092915050565b600082601f8301121515614a5057600080fd5b8135614a63614a5e826156f7565b6156ca565b91508082526020830160208301858383011115614a7f57600080fd5b614a8a8382846157eb565b50505092915050565b600082601f8301121515614aa657600080fd5b8151614ab9614ab4826156f7565b6156ca565b91508082526020830160208301858383011115614ad557600080fd5b614ae08382846157fa565b50505092915050565b600060208284031215614afb57600080fd5b6000614b09848285016149c5565b91505092915050565b600060208284031215614b2457600080fd5b6000614b32848285016149d9565b91505092915050565b600060208284031215614b4d57600080fd5b6000614b5b848285016149ed565b91505092915050565b600060208284031215614b7657600080fd5b6000614b8484828501614a01565b91505092915050565b600060208284031215614b9f57600080fd5b6000614bad84828501614a29565b91505092915050565b600060208284031215614bc857600080fd5b600082013567ffffffffffffffff811115614be257600080fd5b614bee84828501614a3d565b91505092915050565b600060","208284031215614c0957600080fd5b600082015167ffffffffffffffff811115614c2357600080fd5b614c2f84828501614a93565b91505092915050565b60008060408385031215614c4b57600080fd5b600083013567ffffffffffffffff811115614c6557600080fd5b614c7185828601614a3d565b925050602083013567ffffffffffffffff811115614c8e57600080fd5b614c9a85828601614a3d565b9150509250929050565b600080600060608486031215614cb957600080fd5b600084013567ffffffffffffffff811115614cd357600080fd5b614cdf86828701614a3d565b935050602084013567ffffffffffffffff811115614cfc57600080fd5b614d0886828701614a3d565b9250506040614d1986828701614a15565b9150509250925092565b614d2c816157c7565b82525050565b614d3b816157d9565b82525050565b614d4a8161576b565b82525050565b6000614d5b82615740565b808452614d6f8160208601602086016157fa565b614d788161582d565b602085010191505092915050565b6000614d9182615735565b808452614da58160208601602086016157fa565b614dae8161582d565b602085010191505092915050565b600081546001811660008114614dd95760018114614df957614e3a565b607f600283041680865260ff198316602087015260408601935050614e3a565b60028204808652602086019550614e0f85615723565b60005b82811015614e3157815481890152600182019150602081019050614e12565b80880195505050505b505092915050565b6000600a82527f63726561745f64617465000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f4a505900000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601182527f75706461746520636f756e74203c3d20300000000000000000000000000000006020830152604082019050919050565b6000600382527f4d4f5000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601482527f7461626c65206e616d65206e6f742065786973740000000000000000000000006020830152604082019050919050565b6000600382527f53474400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f434e5900000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600782527f6163636f756e74000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f484b4400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f55534400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f41554400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f45555200000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f47425000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061016083016000830151848203600086015261512b8282614d86565b91505060208301516151406020860182614d41565b5060408301516151536040860182614d41565b5060608301516151666060860182614d41565b5060808301516151796080860182614d41565b5060a083015161518c60a0860182614d41565b5060c083015161519f60c0860182614d41565b5060e08301516151b260e0860182614d41565b506101008301516151c7610100860182614d41565b506101208301516151dc610120860182614d41565b506101408301518482036101408601526151f68282614d86565b9150508091505092915050565b60006020820190506152186000830184614d41565b92915050565b600060208201905081810360008301526152388184614d86565b905092915050565b6000604082019050818103600083015261525a8185614d50565b90506152696020830184614d23565b9392505050565b6000604082019050818103600083015261528a8185614d50565b90506152996020830184614d32565b9392505050565b600060608201905081810360008301526152ba8186614d50565b90506152c96020830185614d32565b6152d66040830184614d23565b949350505050565b600060208201905081810360008301526152f88184614dbc565b905092915050565b6000602082019050818103600083015261531981614e42565b9050919050565b6000604082019050818103600083015261533981614e42565b9050818103602083015261534d8184614d50565b905092915050565b6000602082019050818103600083015261536e81614e79565b9050919050565b6000604082019050818103600083015261538e81614e79565b905061539d6020830184614d41565b92915050565b600060208201905081810360008301526153bc81614eb0565b9050919050565b600060208201905081810360008301526153dc81614ee7565b9050919050565b600060408201905081810360008301526153fc81614ee7565b905061540b6020830184614d41565b92915050565b6000602082019050818103600083015261542a81614f1e565b9050919050565b6000602082019050818103600083015261544a81614f55565b9050919050565b6000604082019050818103600083015261546a81614f55565b90506154796020830184614d41565b92915050565b6000602082019050818103600083015261549881614f8c565b9050919050565b600060408201905081810360008301526154b881614f8c565b90506154c76020830184614d41565b92915050565b600060208201905081810360008301526154e681614fc3565b9050919050565b6000604082019050818103600083015261550681614fc3565b9050818103602083015261551a8184614d50565b905092915050565b6000602082019050818103600083015261553b81614ffa565b9050919050565b6000604082019050818103600083015261555b81614ffa565b905061556a6020830184614d41565b92915050565b6000602082019050818103600083015261558981615031565b9050919050565b600060408201905081810360008301526155a981615031565b90506155b86020830184614d41565b92915050565b600060208201905081810360008301526155d781615068565b9050919050565b600060408201905081810360008301526155f781615068565b90506156066020830184614d41565b92915050565b600060208201905081810360008301526156258161509f565b9050919050565b600060408201905081810360008301526156458161509f565b90506156546020830184614d41565b92915050565b60006020820190508181036000830152615673816150d6565b9050919050565b60006040820190508181036000830152615693816150d6565b90506156a26020830184614d41565b92915050565b600060208201905081810360008301526156c2818461510d565b905092915050565b6000604051905081810181811067ffffffffffffffff821117156156ed57600080fd5b8060405250919050565b600067ffffffffffffffff82111561570e57600080fd5b601f19601f8301169050602081019050919050565b60008160005260206000209050919050565b600081519050919050565b600081519050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006157808261574b565b9050919050565b60006157928261574b565b9050919050565b60006157a48261574b565b9050919050565b60006157b68261574b565b9050919050565b6000819050919050565b60006157d28261574b565b9050919050565b60006157e48261574b565b9050919050565b82818337600083830152505050565b60005b838110156158185780820151818401526020810190506157fd565b83811115615827576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a72305820d261e7af78fae4da3d37a485fa3736d417a42f2230b27249270a1c00a44b9a5b6c6578706572696d656e74616cf50037"};

    public static final String SM_BINARY = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", SM_BINARY_ARRAY);

    public static final String[] ABI_ARRAY = {"[{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"string\"},{\"name\":\"createdate\",\"type\":\"string\"}],\"name\":\"insert\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"string\"},{\"name\":\"Currency_type\",\"type\":\"string\"},{\"name\":\"number\",\"type\":\"int256\"}],\"name\":\"reduce\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"UserPay_Info\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"string\"},{\"name\":\"Currency_type\",\"type\":\"string\"},{\"name\":\"number\",\"type\":\"int256\"}],\"name\":\"increase\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"string\"}],\"name\":\"select\",\"outputs\":[{\"components\":[{\"name\":\"account\",\"type\":\"string\"},{\"name\":\"CNY\",\"type\":\"int256\"},{\"name\":\"HKD\",\"type\":\"int256\"},{\"name\":\"MOP\",\"type\":\"int256\"},{\"name\":\"USD\",\"type\":\"int256\"},{\"name\":\"GBP\",\"type\":\"int256\"},{\"name\":\"EUR\",\"type\":\"int256\"},{\"name\":\"JPY\",\"type\":\"int256\"},{\"name\":\"SGD\",\"type\":\"int256\"},{\"name\":\"AUD\",\"type\":\"int256\"},{\"name\":\"create_date\",\"type\":\"string\"}],\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]"};

    public static final String ABI = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", ABI_ARRAY);

    public static final String FUNC_INSERT = "insert";

    public static final String FUNC_REDUCE = "reduce";

    public static final String FUNC_USERPAY_INFO = "UserPay_Info";

    public static final String FUNC_INCREASE = "increase";

    public static final String FUNC_SELECT = "select";

    protected UserPayInfo(String contractAddress, Client client, CryptoKeyPair credential) {
        super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
    }

    public static String getBinary(CryptoSuite cryptoSuite) {
        return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
    }

    public TransactionReceipt insert(String account, String createdate) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(createdate)), 
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] insert(String account, String createdate, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(createdate)), 
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForInsert(String account, String createdate) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(createdate)), 
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple2<String, String> getInsertInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple2<String, String>(

                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue()
                );
    }

    public Tuple1<BigInteger> getInsertOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public TransactionReceipt reduce(String account, String Currency_type, BigInteger number) {
        final Function function = new Function(
                FUNC_REDUCE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Currency_type), 
                new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(number)), 
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] reduce(String account, String Currency_type, BigInteger number, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_REDUCE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Currency_type), 
                new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(number)), 
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForReduce(String account, String Currency_type, BigInteger number) {
        final Function function = new Function(
                FUNC_REDUCE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Currency_type), 
                new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(number)), 
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple3<String, String, BigInteger> getReduceInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_REDUCE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple3<String, String, BigInteger>(

                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (BigInteger) results.get(2).getValue()
                );
    }

    public Tuple1<BigInteger> getReduceOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_REDUCE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public String UserPay_Info() throws ContractException {
        final Function function = new Function(FUNC_USERPAY_INFO, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public TransactionReceipt increase(String account, String Currency_type, BigInteger number) {
        final Function function = new Function(
                FUNC_INCREASE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Currency_type), 
                new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(number)), 
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] increase(String account, String Currency_type, BigInteger number, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_INCREASE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Currency_type), 
                new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(number)), 
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForIncrease(String account, String Currency_type, BigInteger number) {
        final Function function = new Function(
                FUNC_INCREASE, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(account), 
                new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Currency_type), 
                new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(number)), 
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple3<String, String, BigInteger> getIncreaseInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_INCREASE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}, new TypeReference<Utf8String>() {}, new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple3<String, String, BigInteger>(

                (String) results.get(0).getValue(), 
                (String) results.get(1).getValue(), 
                (BigInteger) results.get(2).getValue()
                );
    }

    public Tuple1<BigInteger> getIncreaseOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_INCREASE, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public Struct0 select(String account) throws ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(account)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Struct0>() {}));
        return executeCallWithSingleValueReturn(function, Struct0.class);
    }

    public static UserPayInfo load(String contractAddress, Client client, CryptoKeyPair credential) {
        return new UserPayInfo(contractAddress, client, credential);
    }

    public static UserPayInfo deploy(Client client, CryptoKeyPair credential) throws ContractException {
        return deploy(UserPayInfo.class, client, credential, getBinary(client.getCryptoSuite()), "");
    }

    public static class Struct0 extends DynamicStruct {
        public String account;

        public BigInteger CNY;

        public BigInteger HKD;

        public BigInteger MOP;

        public BigInteger USD;

        public BigInteger GBP;

        public BigInteger EUR;

        public BigInteger JPY;

        public BigInteger SGD;

        public BigInteger AUD;

        public String create_date;

        public Struct0(Utf8String account, Int256 CNY, Int256 HKD, Int256 MOP, Int256 USD, Int256 GBP, Int256 EUR, Int256 JPY, Int256 SGD, Int256 AUD, Utf8String create_date) {
            super(account,CNY,HKD,MOP,USD,GBP,EUR,JPY,SGD,AUD,create_date);
            this.account = account.getValue();
            this.CNY = CNY.getValue();
            this.HKD = HKD.getValue();
            this.MOP = MOP.getValue();
            this.USD = USD.getValue();
            this.GBP = GBP.getValue();
            this.EUR = EUR.getValue();
            this.JPY = JPY.getValue();
            this.SGD = SGD.getValue();
            this.AUD = AUD.getValue();
            this.create_date = create_date.getValue();
        }

        public Struct0(String account, BigInteger CNY, BigInteger HKD, BigInteger MOP, BigInteger USD, BigInteger GBP, BigInteger EUR, BigInteger JPY, BigInteger SGD, BigInteger AUD, String create_date) {
            super(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(account),new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(CNY),new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(HKD),new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(MOP),new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(USD),new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(GBP),new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(EUR),new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(JPY),new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(SGD),new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(AUD),new org.fisco.bcos.sdk.abi.datatypes.Utf8String(create_date));
            this.account = account;
            this.CNY = CNY;
            this.HKD = HKD;
            this.MOP = MOP;
            this.USD = USD;
            this.GBP = GBP;
            this.EUR = EUR;
            this.JPY = JPY;
            this.SGD = SGD;
            this.AUD = AUD;
            this.create_date = create_date;
        }
    }
}
